package com.ruoyi.advertisement.mapper;

import java.util.List;
import com.ruoyi.advertisement.domain.AdvertisementStrategy;

/**
 * 广告投放策略Mapper接口
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
public interface AdvertisementStrategyMapper 
{
    /**
     * 查询广告投放策略
     * 
     * @param strategyId 广告投放策略主键
     * @return 广告投放策略
     */
    public AdvertisementStrategy selectAdvertisementStrategyByStrategyId(Long strategyId);

    /**
     * 查询广告投放策略列表
     * 
     * @param advertisementStrategy 广告投放策略
     * @return 广告投放策略集合
     */
    public List<AdvertisementStrategy> selectAdvertisementStrategyList(AdvertisementStrategy advertisementStrategy);

    /**
     * 新增广告投放策略
     * 
     * @param advertisementStrategy 广告投放策略
     * @return 结果
     */
    public int insertAdvertisementStrategy(AdvertisementStrategy advertisementStrategy);

    /**
     * 修改广告投放策略
     * 
     * @param advertisementStrategy 广告投放策略
     * @return 结果
     */
    public int updateAdvertisementStrategy(AdvertisementStrategy advertisementStrategy);

    /**
     * 删除广告投放策略
     * 
     * @param strategyId 广告投放策略主键
     * @return 结果
     */
    public int deleteAdvertisementStrategyByStrategyId(Long strategyId);

    /**
     * 批量删除广告投放策略
     * 
     * @param strategyIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAdvertisementStrategyByStrategyIds(Long[] strategyIds);

    /**
     * 根据设备ID查询广告策略
     * 
     * @param deviceId 设备ID
     * @return 广告策略
     */
    public AdvertisementStrategy selectStrategyByDeviceId(String deviceId);

    /**
     * 查询启用状态的策略列表
     * 
     * @return 策略列表
     */
    public List<AdvertisementStrategy> selectEnabledStrategies();

    /**
     * 批量插入策略-设备关联
     * 
     * @param strategyId 策略ID
     * @param deviceIds 设备ID列表
     * @return 结果
     */
    public int batchInsertStrategyDevice(Long strategyId, List<String> deviceIds);

    /**
     * 批量插入策略-素材关联
     * 
     * @param strategyId 策略ID
     * @param materialIds 素材ID列表
     * @return 结果
     */
    public int batchInsertStrategyMaterial(Long strategyId, List<Long> materialIds);

    /**
     * 删除策略的所有设备关联
     * 
     * @param strategyId 策略ID
     * @return 结果
     */
    public int deleteStrategyDeviceByStrategyId(Long strategyId);

    /**
     * 删除策略的所有素材关联
     * 
     * @param strategyId 策略ID
     * @return 结果
     */
    public int deleteStrategyMaterialByStrategyId(Long strategyId);

    /**
     * 查询策略关联的设备ID列表
     * 
     * @param strategyId 策略ID
     * @return 设备ID列表
     */
    public List<String> selectDeviceIdsByStrategyId(Long strategyId);

    /**
     * 查询策略关联的素材ID列表
     * 
     * @param strategyId 策略ID
     * @return 素材ID列表
     */
    public List<Long> selectMaterialIdsByStrategyId(Long strategyId);
} 